<?php

class MetaeventoController extends Zend_Controller_Action
{

    protected $_metaevento;
    
    public function init()
    {
        $this->_metaevento = new Metaevento();
    }
    public function indexAction()
    {
    }

    public function detalheAction()
    {
        $id = $this->getRequest()->getParam('metaevento_id');
        $metaevento = $this->_metaevento->find($id)->current();

        $tarefas = $metaevento->findDependentRowset('Tarefas');
        $eventos = $metaevento->findManytoManyRowset('mdlCursos','Eventos');
        $lista_eventos = array();
        foreach ($eventos as $evento){
            $lista_eventos[$evento->startdate.$evento->fullname] = array(
                'id'=>$evento->id,
                'fullname'=>$evento->fullname,
                'startdate'=>$evento->startdate);
        }

        $moodle = new mdlCursos();
        $lista_tutores = array();
        foreach ($lista_eventos as $evento){
            $tutores = $moodle->ListaAtoresByRoleid($evento['id'], 4);
            foreach ($tutores as $tutor){
                $lista_tutores[trim($tutor->nome)][] = array(
                    'evento' => $evento['fullname'],
                    'tutor' => $tutor
                    );
            }
        }
        ksort($lista_eventos);
        ksort($lista_tutores);

        $metaevento = current(Metaevento::getMetaeventos('m.id='.$id));
        
        $this->view->tarefas = $tarefas;
        $this->view->metaevento = $metaevento;
        $this->view->eventos = $lista_eventos;
        $this->view->tutores = $lista_tutores;
        
    }

    public function addEventoAction()
    {
        if ($this->getRequest()->isPost())
        {
            $lista_eventos = $this->getRequest()->getPost('evento_id');
            if (!null==$lista_eventos) {
                $metaevento_id = $this->getRequest()->getParam('metaevento_id');
                $eventos = new Eventos();
                foreach($lista_eventos as $evento):
                    $eventos->insert(array('metaevento_id'=>$metaevento_id,'mdl_curso_id'=>$evento));
                endforeach;
            }
            $this->_forward('detalhe');
        }
    }
    
    public function ajaxIndexAction(){
        $this->_helper->layout->disableLayout(); 
        $post = $this->getRequest()->getPost();
        $post = $post['queryString'];
        $cache = Zend_Registry::get('cache');
		if (!$result = $cache->load('metaevento_'.$post)) {
            $result = Metaevento::getMetaeventos(null,$post);
            $cache->save($result,'metaevento_'.$post);
        }
        $this->view->metaevento = $result;
    }
    public function ajaxFiltrarAction(){
        $this->_helper->layout->disableLayout(); 
        $post = $this->getRequest()->getPost();        
        $this->view->metaevento = Metaevento::getMetaeventos('metaevento like "%'.trim($post['search']).'%"','metaevento');
        $this->render('ajax-index');
    }
    
    public function ajaxOrfaosAction(){
        $this->_helper->layout->disableLayout(); 
        $post = $this->getRequest()->getPost();
        $post = $post['queryString'];
        $eventos = new Eventos();
        $orfaos = $eventos->listaEventosOrfaos($post);
        $this->view->orfaos = $orfaos;
    }

    public function ajaxListaParticipantesAction(){
        $this->_helper->layout->disableLayout(); 
        $evento_id = $this->_getParam('evento_id');
        $eventos = new mdlCursos();
        $participantes = $eventos->ListaAtoresByRoleid($evento_id);
        //criando a paginaçao
        Zend_Paginator::setDefaultScrollingStyle('Sliding');
        Zend_View_Helper_PaginationControl::setDefaultViewPartial('paginator.phtml');
        //manda o paginador usar os dados vindos do banco
        $paginator = Zend_Paginator::factory($participantes);
        //pagina atual. Se nao vier nenhuma pagina, mostra a primeira
        $currentPage = $this->_getParam('page', 1);
        //20 ítens por página
        $paginator->setCurrentPageNumber($currentPage)->setItemCountPerPage(20);
        //manda para a view
        $this->view->lista = $paginator;
        $this->view->total = count($participantes);
    }
    
    public function deleteCicloAction()
    {
        $id = $this->getRequest()->getParam('evento_id');
        $eventos = new Eventos();
        if ($this->getRequest()->isPost())
        {
            $del = $this->getRequest()->getPost('del');
            if ($del == 'Sim') {
                $metaevento_id = $this->getRequest()->getParam('metaevento_id');
                $eventos->excluirCiclo($metaevento_id, $id);
            }
            $this->_forward('detalhe');
        } 
        else {
            $moodle = new mdlCursos();
            $this->view->evento = $moodle->find($id)->current();
        }
    }

    public function deleteAction()
    {
        if ($this->getRequest()->isPost())
        {
            $del = $this->getRequest()->getPost('del');
            if ($del == 'Sim') {
                $id = $this->getRequest()->getParam('metaevento_id');
                $this->_metaevento->delete('id='.$id);
            }
            $cache = Zend_Registry::get('cache');
		    $cache->clean(Zend_Cache::CLEANING_MODE_ALL);
            $this->_forward('index');
        }
        else {
            $metaevento_id = $this->getRequest()->getParam('metaevento_id');
            $this->view->metaevento = $this->_metaevento->find($metaevento_id)->current();
        }

    }

    public function addAction()
    {
        $form = new Application_Form_Metaevento();
        $form->submit->setLabel('Adicionar');
        $this->view->form = $form;
        if ($this->getRequest()->isPost()) {
            $formData = $this->getRequest()->getPost();
            if ($form->isValid($formData)) {
                try{
                    $this->_metaevento->insert(array(
                        'curso'             => $form->getValue('curso'),
                        'mdl_curso_id'      => $form->getValue('mdl_curso_id'),
                        'responsavel_id'    => $form->getValue('responsavel_id'),
                        'status_id'         => $form->getValue('status_id'),
                        'obs'               => $form->getValue('obs'),
                        ));
                }
                catch (Exception $e){
                    $this->_helper->flashMessenger->addMessage(array('message'=>$e->getMessage(),'status'=>'erro'));
                    }
                $cache = Zend_Registry::get('cache');
                $cache->clean(Zend_Cache::CLEANING_MODE_ALL);
                $this->_forward('index');
            } else {
                $form->populate($formData);
            }
        }
    }
    
    public function editAction()
    {
        $form = new Application_Form_Metaevento();
        $form->submit->setLabel('Salvar');
        $this->view->form = $form;
        if ($this->getRequest()->isPost()) {
            $formData = $this->getRequest()->getPost();
            if ($form->isValid($formData)) {
                $this->_metaevento->update(array(
                    'metaevento'        => $form->getValue('metaevento'),
                    'mdl_curso_id'      => $form->getValue('mdl_curso_id'),
                    'responsavel_id'    => $form->getValue('responsavel_id'),
                    'status'            => $form->getValue('status'),
                    'obs'               => $form->getValue('obs'),
                    ),'id='.$form->getValue('id'));
                $cache = Zend_Registry::get('cache');
                $cache->clean(Zend_Cache::CLEANING_MODE_ALL);
                $this->_forward('index');
            } else {
                $form->populate($formData);
            }
        } else
        {
            $id = $this->getRequest()->getParam('metaevento_id', 0);
            if ($id > 0) {
                $form->populate($this->_metaevento->find($id)->current()->toArray());
            }
        }
    }

}
